package hos.net.soap

import com.drake.net.NetConfig
import com.drake.net.request.Method
import org.ksoap2.SoapConst

/**
 * <p>Title: Soap </p>
 * <p>Description:  </p>
 * <p>Company: www.mapuni.com </p>
 *
 * @author : 蔡俊峰
 * @date : 2024-04-08 20:55
 * @version : 1.0
 */
object Soap {
    /**
     * 命名空间
     */
    var nameSpace: String = "http://tempuri.org/"

    /**
     * 是否是net
     */
    var dotNet = true

    /**
     * soap 版本 默认12
     */
    var version = SoapConst.VER12

    /**
     * 同步网络请求
     *
     * @param methodName 方法名, 如果其不包含http/https则会自动拼接[NetConfig.host]
     * @param nameSpace 命名空间
     * @param tag 可以传递对象给Request请求, 一般用于在拦截器/转换器中进行针对某个接口行为判断
     * @param block 函数中可以配置请求参数
     */
    @JvmOverloads
    @JvmStatic
    fun soap(
        methodName: String,
        nameSpace: String = Soap.nameSpace,
        path: String = "",
        tag: Any? = null,
        block: (SoapRequest.() -> Unit)? = null
    ) = SoapRequest(methodName,nameSpace).apply {
        setPath(path)
        method = Method.POST
        tag(tag)
        block?.invoke(this)
    }
}